package com.shujia.wyh.day22.ketang;

/*
        如果方法中有try..catch..finally,并且，在catch中有return语句，结果会是什么样子呢？
        在finally之前执行还是在finally之后执行呢？在finally执行中间

        面试题：finally,final,finalize他们三个你认识吗，他们什么什么区别？
            回答：都认识，但是他们三个之间没有任何关系，只是长得像罢了。finally是在异常处理中遇到，一般是用于释放资源的
                final是java中的一个关键字，他可以修饰类，成员变量，成员方法，修饰类，类不能被继承，修饰成员变量，
                变量变常量，修饰成员方法，方法不能被重写；finalize是Object类中的一个方法名，该方法是用于垃圾回收的
                但是什么时候回收不确定。
 */
public class ExceptionDemo7 {
    public static void main(String[] args) {
        System.out.println(fun()); // a =
    }
    public static int fun(){
        int a = 20;
        int b = 0;
        try {
            a = 30;
            System.out.println(a/b);
            a = 40; // 这一行肯定不会执行
        }catch (ArithmeticException ae){
            a = 60;
//            ae.printStackTrace();
            return a;
            //当程序走到这里的时候，方法其实已经有了一个返回值路径，返回的就是60。
            //但是程序此刻还没有结束，所以依旧会走finally中的语句

        }finally {
            a = 50;
            System.out.println(a);
//            return a;
        }
        return a; // 这里其实是为了语法的正确，加了return
    }
}
